<?php

class App_Form extends Zend_Form
{
	public  $elementDecorators = array(
		'ViewHelper',
    	'Errors',
    	array(array('data'  => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
    	array('Label', array('tag' => 'td')),
    	array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
    );
        
	public  $buttonDecorators = array(
		'ViewHelper',
		array(array('data' => 'HtmlTag'),  array('tag' => 'td', 'class' => 'element')),
		//array(array('label' => 'HtmlTag'), array('tag' => 'td',  'placement' => 'prepend')),
		//array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
	);

	public $fckelementDecorators = 	array(
		'ViewHelper',
		'InnovaEditor',
    	'Errors',
    	array(array('data'  => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
    	array('Label', array('tag' => 'td')),
    	array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
    );
	
	/**
     * Инициализация формы
     * 
     * return void
     */  
    public function init()
    {
        // Вызов родительского метода
    	parent::init();
        // Создаем объект переводчика, он нам необходим для перевода сообщений об ошибках.
        // В качестве адаптера используется php массив
        $translator = new Zend_Translate('array', Zend_Registry::get('config')->path->languages . '/errors.php');
        
        // Задаем объект переводчика для формы
        $this->setTranslator($translator);
        
        /* Задаем префиксы для самописных элементов, валидаторов, фильтров и декораторов.
           Благодаря этому Zend_Form будет знать где искать наши самописные элементы */
        //$this->addElementPrefixPath('App_Validate', 'App/Validate/', 'validate');
        //$this->addElementPrefixPath('App_Filter', 'App/Filter/', 'filter');
        $this->addElementPrefixPath('App_Form_Decorator', 'App/Form/Decorator/', 'decorator');
    }
    
    public function getItemArr($assocArr) {
    	$itemArr = array();
		foreach ($assocArr as $k=>$v) {
			$index = reset($v);
			$itemArr[$index] = next($v);
		}
		return $itemArr;
    }

	public  function loadDefaultDecorators() {
        $this->addElementPrefixPath('App_Form_Decorator', 'App/Form/Decorator/', 'decorator');
		$this->setDecorators(array(
			'FormElements',
			array('HtmlTag', array('tag' => 'table', 'class' => 'formtable')),
			'Form',
		));
	}
	
	public function setVisingDecorator($element) {
		$element->clearDecorators();
		$element
    	//->addDecorator('Standart')
    	->addDecorator('FCKEditor');
//    	->addDecorator('Errors')
//    	->addDecorator(array('data'  => 'HtmlTag'), array('tag' => 'td', 'class' => 'element'))
//    	->addDecorator('Label', array('tag' => 'td'))
//    	->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'tr'));		
    	return $element;
	}
	
	public function setElementDecorator($element) {
		$element->clearDecorators();
		$element->addDecorator('Standart');
    	//->addDecorator('Errors')
    	//->addDecorator(array('data'  => 'HtmlTag'), array('tag' => 'td', 'class' => 'element'))
    	//->addDecorator('Label', array('tag' => 'td'))
    	//->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'tr'));		
    	return $element;
	}
}

?>
